#ifndef DEPOT_HPP_
#	define DEPOT_HPP_


#	include "Vertex.hpp"
#   include <map>
#   include <deque>

class Depot : public Vertex
{
	public:
		Depot(double inX, double inY, double inDueDate)
			: Vertex(DEPOT, inX, inY), deDueDate(inDueDate)
		{}
		
		~Depot()
		{}
		
        std::string     toString() const;
		void	addTournee(unsigned inTournee, Vertex& inPred, Vertex& inSucc);
		void	removeTournee(unsigned inTournee) EXC_THROWER();
        void	setSuccForTournee(unsigned inTournee, Vertex&	inVertex) EXC_THROWER();
        void	setPredForTournee(unsigned inTournee, Vertex&	inVertex) EXC_THROWER();
        
		std::pair<Vertex*, Vertex*>&		getSuccPred(unsigned inTournee) EXC_THROWER();
		
		const double 	deDueDate;
		
	protected:
        std::deque<Vertex*> dePreds;
        std::deque<Vertex*> deSuccs;
		std::map<unsigned, std::pair<Vertex*, Vertex*> >	deSuccsPredsByTournee;
};

#endif
